using System;

namespace Deepcode.Flux.Core.Systems.Workflow.Info
{
	/// <summary>
	/// Describes a workflow method exposed from a workflow handler
	/// </summary>
	public class WorkflowMethodInfo
	{
		#region Private Fields
		private string methodName = "";
		private string friendlyName = "";
		private bool hasConfig = false;
		private string configClass = "";
		#endregion
		#region Properties
		/// <summary>
		/// Get/Set the C# method name
		/// </summary>
		public string MethodName{ get{ return methodName; } set{ methodName = value; }}
		/// <summary>
		/// Get/Set the friendly name of the method
		/// </summary>
		public string FriendlyName{ get{ return friendlyName; } set{ friendlyName = value; }}
		/// <summary>
		/// Get/Set the indicator specifying if the method has a configuration interface
		/// </summary>
		public bool HasConfig{ get{ return hasConfig; } set{ hasConfig=value; }}
		/// <summary>
		/// Get/Set the fully qualified classname of the configuration object for the method
		/// </summary>
		public string ConfigClass{ get{ return configClass; } set{ configClass=value; }}
		#endregion
		/// <summary>
		/// Create a WorkflowMethodInfo object
		/// </summary>
		/// <param name="sMethodName"></param>
		/// <param name="sFriendlyName"></param>
		/// <param name="sConfigClass"></param>
		public WorkflowMethodInfo( string sMethodName, string sFriendlyName, string sConfigClass )
		{
			methodName = sMethodName;
			friendlyName = sFriendlyName;
			configClass = sConfigClass;
			if( configClass == "" ) hasConfig = false;
			else hasConfig=true;
		}
	}
	/// <summary>
	/// Implements an arraylist derived collection of WorkflowMethodInfo objects
	/// </summary>
	public class WorkflowMethodInfos : System.Collections.ArrayList
	{
	}
}
